Calculi for Program Incorrectness and Arithmetic
نویسنده
چکیده
This thesis is about the development and usage of deductive methods in two main areas: (i) the deductive dis-verification of programs, i.e., how techniques for deductive verification of programs can be used to detect program defects, and (ii) reasoning modulo integer arithmetic, i.e., how to prove the validity (and, in special cases, satisfiability) of first-order formulae that involve integer arithmetic. The areas of program verification and of testing are traditionally considered as complementary: the former searches for a formal proof of program correctness, while the latter searches for witnesses of program incorrectness. Nevertheless, deductive verification methods can discover bugs indirectly: the failure to prove the absence of bugs is interpreted as a sign for the incorrectness of the program. This approach is bound to produce “false positives” and bugs can be reported also for correct programs. To overcome this problem, I investigate how techniques that are normally used for verification can be used to directly prove the incorrectness of programs. This covers both the detection of partial incorrectness (a program produces results that are inconsistent with a declarative specification), and the detection of total incorrectness (a program diverges erroneously). As a prerequisite for both program correctness and incorrectness proofs, I investigate and extend the concept of updates, which is the central component for performing symbolic execution in Java dynamic logic. Updates are systematically developed as an imperative programming language that provides the following constructs: assignments, guards, sequential composition and bounded as well as unbounded parallel composition. Further, I formulate a calculus for integer arithmetic that is tailored to program verification. While restricted to ground problems, the calculus can handle both linear and nonlinear arithmetic (to some degree) and is useful both for automated and interactive reasoning. The calculus for integer arithmetic can naturally be generalised to a standalone procedure for Presburger arithmetic with uninterpreted predicates, which is a logic that subsumes both Presburger arithmetic and first-order logic. The procedure has similarities both with SMT-solvers and with the methods used in automated first-order theorem provers. It is complete for theorems of first-order logic, decides Presburger arithmetic, and is complete for a substantial fragment of the combination of both.
منابع مشابه
Proving Programs Incorrect Using a Sequent Calculus for Java Dynamic Logic
Program verification is concerned with proving that a program is correct and adheres to a given specification. Testing a program, in contrast, means to search for a witness that the program is incorrect. In the present paper, we use a program logic for Java to prove the incorrectness of programs. We show that this approach, carried out in a sequent calculus for dynamic logic, creates a connecti...
متن کاملPositive and Negative Diagnosis for Constraint
The paper is motivated by the declarative debugging of constraint logic programs. It deals with the theoretical basis of declarative incorrectness diagnosis. It starts with a reformulation of the program semantics in terms of proof tree skeletons, which is suitable for declarative diagnosis study. The program semantics is explained in terms of positive semantics and negative semantics. The prob...
متن کاملPositive And Negative Diagnosis for Constraint Logic Programs in Terms of Proof Skeletons
The paper is motivated by the declarative debugging of constraint logic programs It deals with the theoretical basis of declarative incorrectness diag nosis It starts with a reformulation of the program semantics in terms of proof tree skeletons which is suitable for declarative diagnosis study The program semantics is explained in terms of positive semantics and negative semantics The problem ...
متن کاملOn Formally Correct Implementation of IEEE Computer Arithmetic
IEEE oating-point arithmetic standards 754 and 854 re ect the present state of the art in designing and implementing oating-point arithmetic units. A formalism applied to a standard non-trapping mode oating-point system shows incorrectness of some numeric and non-numeric results. A software emulation of decimal oating-point computer arithmetic supporting an enhanced set of exception symbols is ...
متن کاملThe Impact of the Stabilization Program on the Learnings of the Participants in the Literacy Program
The Impact of the Stabilization Program on the Learnings of the Participants in the Literacy Program R. Hassani, Ph.D.* To explore the impact of the stabilization program on the learnings of the participants in the literacy program, a sample of 891 participants from six provinces in three categories of privileged, semi-privileged, and low-privileged was selected and tested rep...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2008